//package com.ftg.learn.bus.config;
//
//import org.aspectj.lang.JoinPoint;
//import org.aspectj.lang.annotation.*;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.stereotype.Component;
//import org.springframework.web.context.request.RequestAttributes;
//import org.springframework.web.context.request.RequestContextHolder;
//import org.springframework.web.context.request.ServletRequestAttributes;
//
//import javax.servlet.http.HttpServletRequest;
//import java.util.Arrays;
//
//
///**
// * 通知有五种类型，分别是：
// * <p>
// * * 前置通知（@Before）：在目标方法调用之前调用通知
// * <p>
// * * 后置通知（@After）：在目标方法完成之后调用通知
// * <p>
// * 环绕通知（@Around）：在被通知的方法调用之前和调用之后执行自定义的方法
// * <p>
// * * 返回通知（@AfterReturning）：在目标方法成功执行之后调用通知
// * <p>
// * * 异常通知（@AfterThrowing）：在目标方法抛出异常之后调用通知
// *
// * @author Guo
// * @date 2022/3/12
// */
//@Aspect
//@Component
//public class WebLogAspectTest {
//    private final Logger logger = LoggerFactory.getLogger(WebLogAspectTest.class);
//
//    //切入点描述 这个是controller包的切入点
//    @Pointcut("execution(public * com.ftg.learn.bus.controller.*.*(..))")
//    public void controllerLog() {
//    }//签名，可以理解成这个切入点的一个名称
//
//    @Pointcut("execution(public * com.ftg.learn.util.*.*(..))")
//    public void controllerLogUtil() {
//    }//签名，可以理解成这个切入点的一个名称
//
//    @Before("controllerLog() || controllerLogUtil()") //在切入点的方法run之前要干的
//    public void logBeforeController() {
//        logger.info(" 1 在目标方法调用之前调用通知");
//    }
//
//    @After("controllerLog() || controllerLogUtil()")
//    private void logAfterController() {
//        logger.info(" 3 在目标方法完成之后调用通知");
//    }
//
//    @AfterReturning("controllerLog() || controllerLogUtil()")
//    public void logBAfterReturningController(JoinPoint joinPoint) {
//
//        logger.info("在目标方法成功执行之后调用通知");
//    }
//
//    @AfterThrowing("controllerLog() || controllerLogUtil()")
//    public void logAfterThrowing() {
//        logger.info("在目标方法抛出异常之后调用通知");
//    }
//
//}
